<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// * 怎么生成一个基本包装类型的包装对象呢?
	// {
	// 	// String
	// 	const str = "字符串";
	// 	const obj = new String(str);// 字符串包装对象
	// 	const obj2 = new Object(str);// 字符串包装对象
	// 	console.log(obj);
	// 	console.log(typeof obj);// object
	// 	console.log(obj["0"]);//
	// 	for(let key in obj){
	// 		console.log(key,obj[key])
	// 	}
	// 	console.log(obj.length);
	// 	console.log(obj.charAt(1));
	// }
	//
	// // Number、Boolean指的是包装类型
	// {
	// 	// 生成Number类型的包装对象1
	// 	const numObj = new Number(1);
	// 	// 生成Number类型的包装对象2
	// 	const numObj2 = new Object(2);// 根据接收的参数判断类型->string-->new String
	// 	console.log(numObj,numObj2)
	// 	console.log(numObj == 1);
	// 	console.log(numObj === 1);
	// }
	
	// * 基本包装类型不是对象，为什么会有属性呢?
	// {
	// 	const str = "zhang";
	// 	// console.log(str.length);//5
	// 	// 上方代码会被如下执行：
	// 	{
	// 		// 1- 创建
	// 		var _str = new String(str);
	// 		// 2- 使用
	// 		console.log(_str.length);// 5
	// 		// 3- 销毁
	// 		_str = null;
	// 	}
	// }
	
	
	// * 引用类型和基本包装类型的区别？
	// 1- 生命周期不同
	// {
	// 	// 引用类型
	// 	const obj = {
	// 		a:1,
	// 		b:2
	// 	}
	// 	console.log(obj.a);
	//
	// 	// 基本包装类型
	// 	const userName = "zhangsan";
	// 	console.log(userName);
	// }
	// 2- 基本包装类型不可以直接添加方法或属性。
	// {
		// 引用类型
		// const obj = {
		//
		// }
		// obj.userName = "lisi";
		// console.log(obj.userName)
		
		
		// 基本包装类型
		// const userName = "laowang";
		// userName.age = 100;
		// console.log(userName.age);// undefined
		// {
		// 	// 80-解释：
		// 	var _userName = new String(userName);
		// 	_userName.age = 100;
		// 	_userName = null;
		//
		// 	// 81-解释
		// 	var _userName = new String(userName);
		// 	console.log(_userName.age);// undefined
		// 	_userName = null;
		// }
	// }
	// * 如何给基本类型添加方法或者属性呢？
	// {
	// 	String.prototype.age = 90;
	// 	String.prototype.last = function(){
	// 		// console.log("last",this);
	// 		// return 100;
	// 		return this.charAt(this.length-1);//
	// 	}
	// 	const userName = "zhangsan";
	// 	console.log(userName.last());// n
	// 	console.log(userName.age);// 90
	//
	// 	// {
	// 	// 	var _userName = new String(userName);
	// 	// 	console.log(_userName.last());// n
	// 	// 	_userName = null;
	// 	// }
	// }
	
	
</script>
</html>